<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport"
        content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>队列</title>
</head>
<body>
  <script>
    // 普通队列
    function Queue() {
      this.dataStore = [];
      this.enqueue = enqueue;  //向队尾增加一个元素
      this.dequeue = dequeue; // 删除队首元素
      this.front = front; // 读取队首的元素
      this.back = back; // 读取队尾的元素
      this.toString = toString; // 显示队列中的所有元素
      this.empty = empty; // 判断队列是否为空
    }

    // 入队
    function enqueue(element) {
      this.dataStore.push(element);
    }

    // 出队
    function dequeue() {
      return this.dataStore.shift();
    }

    function front() {
      return this.dataStore[0]
    }
    
    function back() {
      return this.dataStore[this.dataStore.length - 1];
    }
    
    function empty() {
      return this.dataStore.length === 0;
    }

    function toString() {
      let reStr = "";
      for (let i = 0; i < this.dataStore.length; i++){
        reStr += this.dataStore[i] + '\n';
      }
      return reStr;
    }

    let q = new Queue();
    q.enqueue('小明');
    q.enqueue('小王');
    q.enqueue('小张');
    q.enqueue('小红');

    console.log(q.toString());

    // 优先队列
    // function Patient(name,code) {
    //   this.name = name;
    //   this.code = code;
    // }
    //
    // // 改写了出队顺序
    // function dequeue() {
    //   let priority = 0;
    //   for (let i = 0; i < this.dataStore.length; ++i){
    //     if(this.dataStore[i].code > this.dataStore[priority].code){
    //       priority = i;
    //     }
    //   }
    //   return this.dataStore.splice(priority,1);
    // }

    // function toString(){
    //   let retStr = "";
    //   for (let i = 0; i < this.dataStore.length; ++i){
    //     retStr += this.dataStore[i].name + "code:" + this.dataStore[i].code + '\n';
    //   }
    //   return retStr;
    // }
    //
    // let pa = new Patient('小明',2);
    // let pa1 = new Patient('小王',4);
    // let pa2 = new Patient('小张',1);
    // let pa3 = new Patient('小红',3);
    //
    // let quePatient = new Queue();
    // quePatient.enqueue(pa);
    // quePatient.enqueue(pa1);
    // quePatient.enqueue(pa2);
    // quePatient.enqueue(pa3);
    //
    // console.log('第一个出队的人'+quePatient.dequeue());
    // console.log(quePatient.toString());


  </script>
</body>
</html>